/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.celiosilva.simbanc.controller.cliente;

import com.celiosilva.simbanc.arquitetura.Sessao;
import com.celiosilva.simbanc.beans.Cliente;
import com.celiosilva.simbanc.beans.ClienteFisico;
import com.celiosilva.simbanc.beans.ClienteJuridico;
import com.celiosilva.simbanc.business.ClienteBusiness;
import com.celiosilva.simbanc.business.seguranca.Permissao;
import com.celiosilva.simbanc.controller.util.Conversor;
import com.celiosilva.simbanc.exceptions.AcessoNegadoException;
import com.celiosilva.simbanc.view.ClienteView;
import java.text.ParseException;

/**
 *
 * @author celio@celiosilva.com
 */
public class VisualizarClienteController extends ClienteView{

    protected               Cliente                     clienteVisualizado;

    public VisualizarClienteController() throws AcessoNegadoException {
        Sessao.getInstance().validarAcesso(this);
    }


    public VisualizarClienteController(Integer codigo) throws AcessoNegadoException {
        this();
        this.consultarCliente(codigo);
    }
    
    @Override
    protected String getTitulo() {
        return "Visualizar Cliente";
    }

    @Override
    protected String getRotuloIdentificador() {
        return "CPF/CNPJ:";
    }

    @Override
    protected String getFormatoMascaraIdentificador() {
        return "";
    }

    @Override
    protected void salvarCliente() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    protected void consultarCliente() {
        this.consultarCliente((Integer)Conversor.STRING_INTEGER.converterPara(txtCodigo.getText()));
    }

    private void consultarCliente(Integer codigo){
        clienteVisualizado = ClienteBusiness.getInstance().consultarClientePorCodigo(codigo);
        this.mostrarBeanCliente(clienteVisualizado);
    }

    @Override
    protected void mostrarBeanCliente(Cliente c) {
        this.limparTela();
        if (c instanceof ClienteFisico){
            try {
                this.iniciarMascaraIdentificador("###.###.###-##");
                this.lblIdentificador.setText("CPF:");
                this.lblSobrenomeNomeFantasia.setText("Sobrenome:");
            } catch (ParseException ex) {
                ex.printStackTrace();
            }
            ClienteFisico cFisico = (ClienteFisico) c;
            this.txtIdentificador.setText(cFisico.getCpf());
        } else if (c instanceof ClienteJuridico){
            try {
                this.iniciarMascaraIdentificador("##.###.###/####-##");
                this.lblIdentificador.setText("CNPJ:");
                this.lblSobrenomeNomeFantasia.setText("Nome Fantasia:");
            } catch (ParseException ex) {
                ex.printStackTrace();
            }
            ClienteJuridico cJuridico = (ClienteJuridico) c;
            this.txtIdentificador.setText(cJuridico.getCnpj());
        } else {
            return;
        }
        super.mostrarBeanCliente(c);
    }



    @Override
    protected void bloquearCliente() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    protected void cancelarCliente() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    protected void reativarCliente() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public Permissao getPermissaoAtribuida() {
        return Permissao.VISUALIZAR_CLIENTE;
    }

}
